#pragma once
#include "filter.h"
#include <opencv2/features2d/features2d.hpp>

class FeatureDetection :
	public Filter
{
public:
	static const std::string DetectorTypeFAST;
	static const std::string DetectorTypeSTAR;
	static const std::string DetectorTypeSURF;
	static const std::string DetectorTypeORB;
	static const std::string DetectorTypeMSER;
	static const std::string DetectorTypeGFFT;
	static const std::string DetectorTypeHARRIS;
	static const std::string DetectorTypeDense;
	static const std::string DetectorTypeSimpleBlob;

	enum Inputs { INPUT_RGB_MAP = 0,
					INPUT_MASK = 1};
	enum Outputs  {	OUTPUT_KEYPOINTS = 0,
					OUTPUT_POINTS2D = 1};

	FeatureDetection(const std::string &detectorType);
	virtual ~FeatureDetection(void);

	void Process();

private:

	cv::Ptr<cv::FeatureDetector> featureDetector;
};

